#ifndef WORLD_H
#define WORLD_H

#include <OGRE/Ogre.h>
#include <OgreAxisAlignedBox.h>
#include <OgreBullet/Collisions/OgreBulletCollisionsShape.h>
#include <OgreBullet/Dynamics/OgreBulletDynamicsRigidBody.h>

#include "StaticGameObject.h"

/**
 * @brief The World class.
 *
 * A World class is responsible to initialise, setup and destroy the world/terrain of the game
 */
class World : public StaticGameObject
{
public:
    /** Constructor of World
     *
     * @param p_OgreSceneManager: Scene Manager
     */
    World(Ogre::SceneManager* p_OgreSceneManager);

    /** Destructor of World
     *
     * @param destroyes entity, nodes and everything associated with it
     */
	~World();

private:

    /**
    * @brief SetupScene
    * sets up the scene by creating entity, lightning and physics
    */
	void SetupScene();

    /**
     * @brief m_OgreSceneManager
     * Scene Manager handed over to world from other classes
     */
    Ogre::SceneManager* m_OgreSceneManager;

};

#endif // WORLD_H
